#pragma once
#include <HOOK.h>
#include<FastFunction.h>



class Hook0e
{
public:
	VOID Initialization();
	VOID Uninstall();
private:
	VOID Hook_Start();
private:
	VOID SaveProcessInfo();


private:
	VOID HOOK_MmAccessFault();
private:

	static BOOLEAN Idt_OE_SurrogateFunction(ULONG64 Trap);
public:	
	static BOOLEAN OnPageFault(ULONG64 FaultAddress);
	static BOOLEAN SetMissingPages(ULONG64 VirtualAddress);
	static BOOLEAN SettingPagesToBeValid(ULONG64 VirtualAddress);
private:
	VOID CreatePte();
	PVOID MmMapIoSpace_Me(ULONG_PTR PaAddr, int Mapped_len);
private:
	HOOK m_Hook;


};

